package org.example.springmvc.controller;


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import static org.springframework.web.bind.annotation.RequestMethod.DELETE;
import static org.springframework.web.bind.annotation.RequestMethod.GET;

//告诉Spring这是一个控制器（处理请求的组件），不跳页面
@RestController//前后分离开发标准注解
public class RequestMappingLimitController {
    /*请求方式：
     * GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS,TRACE
     * */

    @RequestMapping(value = "/test01", method = {RequestMethod.POST, DELETE})
    public String test01() {
        return "hello world";
    }

    /*请求参数：params={"username","age"}
     * 1）.username:表示请求必须包含username参数（！username:表示请求必须不包含username参数）
     * 2）.age=18:表示请求参数中心必须包含age=1的参数
     * 3）.gender!=1:表示请求参数中心不包含gender=1的参数（gender!=1 or 不带gender）*/
    @RequestMapping(value = "/test02", params = {"age=18", "username", "gender!=1"})
    public String test02() {
        return "test02";
    }

    /*请求参数：headers={"haha"}
     * 1).haha:表示请求中必须包含haha的请求头
     * 2）hehe!=1:表示请求头中的hehe不能是1：（hehe=0,不带hehe）*/
    @RequestMapping(value = "/test03", headers = {"haha"})
    public String test03() {
        return "test03";
    }

    /*请求参数：consumes={"application/json"}：消费什么数据
     *Media Type:媒体类型
     * 1).application/json:表示浏览器必须携带json格式的数据
     * 2）application/xml:表示请求头中Content-Type必须为application/xml*/
    @RequestMapping(value = "/test04", consumes = {"application/json"})
    public String test04() {
        return "test04";
    }

    /*请求参数：produces={"text/plain;charset=utf-8"}：生产什么数据*/
    @RequestMapping(value = "/test05", produces = {"text/html;charset=utf-8"})
    public String test05() {
        return "<h1>你好，张三</h1>";
    }
}
